// 扩展1-1 函数默认值(缺省参数值)
/**
 * 链接: https://blog.csdn.net/kanglongyao/article/details/47184593
 * 总结：
 * 1. 默认值必须从右往左设置
 * 2. 函数声明中设置默认值可以不带参数名
 * 3. 函数声明和函数定义阶段不能同时设置默认值，要么只在函数声明中设置，要么只在函数定义中设置。
 * 4. 函数无声明只定义，在定义中设置默认值，在定义后使用函数
 * 5. 函数有声明，有定义，在定义与声明见使用函数，默认值要设置在声明中，编译器才能编译通过
 * 6. 函数有声明，有定义，在函数定义后面使用函数，默认值可以设置在定义或声明。
 * 
 * 一般情况下，将函数默认值设置在定义中。
*/
#include <iostream>
// void fun(int, int, int = 0);// 可以
// void fun(int, int = 0, int c = 0); // 可以
// void fun(int = 1, int, int c = 0); // 不可以，参数必须从右边往左的顺序
// void fun(int = 1, int = 0, int c); // 不可以，参数必须从右边往左的顺序

void fun(int, int, int = 0);
void fun(int a, int b, int c) // 可以
{
  std::cout << "a: " << a << " b : " << b << " c : " << c << std::endl;
}
int main()
{
  // fun(1, 2);
  fun(1, 2);
  // fun(1, 2, 3);
  printf("--------------end--------------\n");
  return 0;
}
// void fun(int a, int b, int c)
// void fun(int a, int b, int c = 0) // 可以
// {
//   std::cout << "a: " << a << " b : " << b << " c : " << c << std::endl;
// }